import NativeShare from 'nativeshare'
import $ from 'jquery'

const nativeShare = new NativeShare()

export const share = {
  weChatConfig: {},
  conf: {},
  init({link = location.href, title = '河南政务服务网', desc = '河南政务服务网', from = '@河南政务服务网', icon = GLOBAL_CONF.WEB_URL + 'favicon.png'}) {
    Object.assign(this.conf, {link, title, desc, from, icon})
    nativeShare.setConfig({
      wechatConfig: {
        appId: '',
        timestamp: '',
        nonceStr: '',
        signature: ''
      },
      // 让你修改的分享的文案同步到标签里，比如title文案会同步到<title>标签中
      // 这样可以让一些不支持分享的浏览器也能修改部分文案，默认都不会同步
      syncDescToTag: false,
      syncIconToTag: false,
      syncTitleToTag: false
    })
    if (window.setShareInfo) {
      // 设置微信内置浏览器、qq内置浏览器分享文案
      window.setShareInfo({
        title: this.conf.title, // 分享标题
        summary: this.conf.desc, // 分享内容
        pic: this.conf.icon, // 分享图片
        url: this.conf.link, // 分享链接
        // 微信权限验证配置信息，若不在微信传播，可忽略
        WXconfig: {
          swapTitleInWX: false, // 是否标题内容互换（仅朋友圈，因朋友圈内只显示标题）
          appId: this.weChatConfig.appId, // 公众号的唯一标识
          timestamp: this.weChatConfig.timestamp, // 生成签名的时间戳
          nonceStr: this.weChatConfig.nonceStr, // 生成签名的随机串
          signature: this.weChatConfig.signature // 签名
        }
      })
    }
  },
  run(cb) {
    // 设置分享文案
    nativeShare.setShareData(this.conf)
    // 手机QQ内置浏览器
    if (/ QQ/i.test(navigator.userAgent)) {
      showMask()
      // 微信内置浏览器
    } else if (/MicroMessenger/i.test(navigator.userAgent)) {
      showMask()
      // qq浏览器和UC浏览器  /MQQBrowser|UCBrowser/i
    } else {
      try {
        nativeShare.call()
      } catch (err) {
        // 如果不支持，你可以在这里做降级处理
        if (typeof cb === 'function') cb()
      }
    }
  }
}

function showMask() {
  const dom = $('<div></div>')
  dom.css({
    'background': 'rgba(0,0,0,0.5) url("./static/defaultImg/live_weixin.png") no-repeat right top',
    'background-size': '70% auto',
    'position': 'fixed',
    'width': '100%',
    'height': '100%',
    'top': '0',
    'left': '0',
    'z-index': '9999'
  })
  dom.click(() => {
    dom.remove()
  })
  $('body').append(dom)
}
